package com.ff.xyh.access.service.access;

import com.ff.xyh.common.entity.useraccess.AccessUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ff.xyh.common.qo.access.AccessUserQuery;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 后台用户表 服务类
 * </p>
 *
 * @author ff
 * @since 2022-10-25
 */
@CacheConfig(cacheNames = {"AccessUserService"})
public interface AccessUserService extends IService<AccessUser> {

    String login(String userToken, String password);
    // 后台管理可能需要多次调用获取所有后台人员id
//    @Cacheable(value = "all_complaint_type", unless = "#result == null", key = "0")
//    List<AccessUser> getAllAccessUser();

//    @CacheEvict(value = "all_complaint_type", key = "0" )
    boolean register(AccessUser accessUser);

//    @Cacheable(unless = "#result == null", key = "#userId")
//    String getToken(String userId) ;

    @CacheEvict(key = "#userId")
    boolean updatePassword(String userId, String rawPassword);

    @CacheEvict(key = "#userId")
    boolean deleteAccessUserById(String userId);



    /**
     * 获取具有特定权限的所有管理员
     * @param id
     * @return
     */
    List<AccessUser> getAllAccessUserWithPermissionId(String id);

    /**
     * 获取特定角色的所有管理员
     * @param id
     * @return
     */
    List<AccessUser> getAllAccessUserWithRoleId(String id);

    /**
     * 根据 用户令牌(用户名 手机号 邮箱) 获取用户
     * @param userToken
     * @return
     */
    AccessUser getAccessUserWithUserToken(String userToken);

    List<AccessUser> getUserListQuery(AccessUserQuery accessUserQuery);

    Map<String, Object> getUserInfo(String userToken);

}
